package com.xqzgj.system.domain;

import com.xqzgj.common.annotation.Excel;
import com.xqzgj.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 库存变更记录对象 stock_record
 */
public class StockRecord extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 记录ID */
    private Long id;

    /** 记录单号 */
    @Excel(name = "记录单号")
    private String recordCode;

    /** 商品ID */
    @Excel(name = "商品ID")
    private Long goodsId;

    /** 商品编码 */
    @Excel(name = "商品编码")
    private String goodsCode;

    /** 商品名称 */
    @Excel(name = "商品名称")
    private String goodsName;

    /** 商品规格 */
    @Excel(name = "商品规格")
    private String goodsSpec;

    /** 商品单位 */
    @Excel(name = "商品单位")
    private String goodsUnit;

    /** 记录类型（1入库 2出库 3调拨 4盘点 5报损 6报溢） */
    @Excel(name = "记录类型", readConverterExp = "1=入库,2=出库,3=调拨,4=盘点,5=报损,6=报溢")
    private String recordType;

    /** 记录子类型（1采购入库 2退货入库 3销售出库 4退货出库 5调拨入库 6调拨出库 7盘点入库 8盘点出库 9报损 10报溢） */
    @Excel(name = "记录子类型", readConverterExp = "1=采购入库,2=退货入库,3=销售出库,4=退货出库,5=调拨入库,6=调拨出库,7=盘点入库,8=盘点出库,9=报损,10=报溢")
    private String recordSubType;

    /** 记录日期 */
    @Excel(name = "记录日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private String recordDate;

    /** 数量 */
    @Excel(name = "数量")
    private Integer quantity;

    /** 变更前数量 */
    @Excel(name = "变更前数量")
    private Integer beforeQuantity;

    /** 变更后数量 */
    @Excel(name = "变更后数量")
    private Integer afterQuantity;

    /** 单价 */
    @Excel(name = "单价")
    private Double unitPrice;

    /** 总金额 */
    @Excel(name = "总金额")
    private Double totalAmount;

    /** 供应商ID */
    @Excel(name = "供应商ID")
    private Long supplierId;

    /** 供应商名称 */
    @Excel(name = "供应商名称")
    private String supplierName;

    /** 客户ID */
    @Excel(name = "客户ID")
    private Long customerId;

    /** 客户名称 */
    @Excel(name = "客户名称")
    private String customerName;

    /** 仓库ID */
    @Excel(name = "仓库ID")
    private Long warehouseId;

    /** 仓库名称 */
    @Excel(name = "仓库名称")
    private String warehouseName;

    /** 目标仓库ID */
    @Excel(name = "目标仓库ID")
    private Long targetWarehouseId;

    /** 目标仓库名称 */
    @Excel(name = "目标仓库名称")
    private String targetWarehouseName;

    /** 操作人ID */
    @Excel(name = "操作人ID")
    private Long operatorId;

    /** 操作人姓名 */
    @Excel(name = "操作人姓名")
    private String operatorName;

    /** 审批人ID */
    @Excel(name = "审批人ID")
    private Long approverId;

    /** 审批人姓名 */
    @Excel(name = "审批人姓名")
    private String approverName;

    /** 审批时间 */
    @Excel(name = "审批时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private String approveTime;

    /** 审批状态（0待审批 1已通过 2已拒绝） */
    @Excel(name = "审批状态", readConverterExp = "0=待审批,1=已通过,2=已拒绝")
    private String approveStatus;

    /** 记录状态（0草稿 1已提交 2已审核 3已取消） */
    @Excel(name = "记录状态", readConverterExp = "0=草稿,1=已提交,2=已审核,3=已取消")
    private String recordStatus;

    /** 批次号 */
    @Excel(name = "批次号")
    private String batchNumber;

    /** 有效期 */
    @Excel(name = "有效期", width = 30, dateFormat = "yyyy-MM-dd")
    private String expiryDate;

    /** 记录备注 */
    private String recordRemark;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setRecordCode(String recordCode) {
        this.recordCode = recordCode;
    }

    public String getRecordCode() {
        return recordCode;
    }

    public void setGoodsId(Long goodsId) {
        this.goodsId = goodsId;
    }

    public Long getGoodsId() {
        return goodsId;
    }

    public void setGoodsCode(String goodsCode) {
        this.goodsCode = goodsCode;
    }

    public String getGoodsCode() {
        return goodsCode;
    }

    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }

    public String getGoodsName() {
        return goodsName;
    }

    public void setGoodsSpec(String goodsSpec) {
        this.goodsSpec = goodsSpec;
    }

    public String getGoodsSpec() {
        return goodsSpec;
    }

    public void setGoodsUnit(String goodsUnit) {
        this.goodsUnit = goodsUnit;
    }

    public String getGoodsUnit() {
        return goodsUnit;
    }

    public void setRecordType(String recordType) {
        this.recordType = recordType;
    }

    public String getRecordType() {
        return recordType;
    }

    public void setRecordSubType(String recordSubType) {
        this.recordSubType = recordSubType;
    }

    public String getRecordSubType() {
        return recordSubType;
    }

    public void setRecordDate(String recordDate) {
        this.recordDate = recordDate;
    }

    public String getRecordDate() {
        return recordDate;
    }

    public void setQuantity(Integer quantity) {
        this.quantity = quantity;
    }

    public Integer getQuantity() {
        return quantity;
    }

    public void setBeforeQuantity(Integer beforeQuantity) {
        this.beforeQuantity = beforeQuantity;
    }

    public Integer getBeforeQuantity() {
        return beforeQuantity;
    }

    public void setAfterQuantity(Integer afterQuantity) {
        this.afterQuantity = afterQuantity;
    }

    public Integer getAfterQuantity() {
        return afterQuantity;
    }

    public void setUnitPrice(Double unitPrice) {
        this.unitPrice = unitPrice;
    }

    public Double getUnitPrice() {
        return unitPrice;
    }

    public void setTotalAmount(Double totalAmount) {
        this.totalAmount = totalAmount;
    }

    public Double getTotalAmount() {
        return totalAmount;
    }

    public void setSupplierId(Long supplierId) {
        this.supplierId = supplierId;
    }

    public Long getSupplierId() {
        return supplierId;
    }

    public void setSupplierName(String supplierName) {
        this.supplierName = supplierName;
    }

    public String getSupplierName() {
        return supplierName;
    }

    public void setCustomerId(Long customerId) {
        this.customerId = customerId;
    }

    public Long getCustomerId() {
        return customerId;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setWarehouseId(Long warehouseId) {
        this.warehouseId = warehouseId;
    }

    public Long getWarehouseId() {
        return warehouseId;
    }

    public void setWarehouseName(String warehouseName) {
        this.warehouseName = warehouseName;
    }

    public String getWarehouseName() {
        return warehouseName;
    }

    public void setTargetWarehouseId(Long targetWarehouseId) {
        this.targetWarehouseId = targetWarehouseId;
    }

    public Long getTargetWarehouseId() {
        return targetWarehouseId;
    }

    public void setTargetWarehouseName(String targetWarehouseName) {
        this.targetWarehouseName = targetWarehouseName;
    }

    public String getTargetWarehouseName() {
        return targetWarehouseName;
    }

    public void setOperatorId(Long operatorId) {
        this.operatorId = operatorId;
    }

    public Long getOperatorId() {
        return operatorId;
    }

    public void setOperatorName(String operatorName) {
        this.operatorName = operatorName;
    }

    public String getOperatorName() {
        return operatorName;
    }

    public void setApproverId(Long approverId) {
        this.approverId = approverId;
    }

    public Long getApproverId() {
        return approverId;
    }

    public void setApproverName(String approverName) {
        this.approverName = approverName;
    }

    public String getApproverName() {
        return approverName;
    }

    public void setApproveTime(String approveTime) {
        this.approveTime = approveTime;
    }

    public String getApproveTime() {
        return approveTime;
    }

    public void setApproveStatus(String approveStatus) {
        this.approveStatus = approveStatus;
    }

    public String getApproveStatus() {
        return approveStatus;
    }

    public void setRecordStatus(String recordStatus) {
        this.recordStatus = recordStatus;
    }

    public String getRecordStatus() {
        return recordStatus;
    }

    public void setBatchNumber(String batchNumber) {
        this.batchNumber = batchNumber;
    }

    public String getBatchNumber() {
        return batchNumber;
    }

    public void setExpiryDate(String expiryDate) {
        this.expiryDate = expiryDate;
    }

    public String getExpiryDate() {
        return expiryDate;
    }

    public void setRecordRemark(String recordRemark) {
        this.recordRemark = recordRemark;
    }

    public String getRecordRemark() {
        return recordRemark;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("recordCode", getRecordCode())
                .append("goodsId", getGoodsId())
                .append("goodsCode", getGoodsCode())
                .append("goodsName", getGoodsName())
                .append("goodsSpec", getGoodsSpec())
                .append("goodsUnit", getGoodsUnit())
                .append("recordType", getRecordType())
                .append("recordSubType", getRecordSubType())
                .append("recordDate", getRecordDate())
                .append("quantity", getQuantity())
                .append("beforeQuantity", getBeforeQuantity())
                .append("afterQuantity", getAfterQuantity())
                .append("unitPrice", getUnitPrice())
                .append("totalAmount", getTotalAmount())
                .append("supplierId", getSupplierId())
                .append("supplierName", getSupplierName())
                .append("customerId", getCustomerId())
                .append("customerName", getCustomerName())
                .append("warehouseId", getWarehouseId())
                .append("warehouseName", getWarehouseName())
                .append("targetWarehouseId", getTargetWarehouseId())
                .append("targetWarehouseName", getTargetWarehouseName())
                .append("operatorId", getOperatorId())
                .append("operatorName", getOperatorName())
                .append("approverId", getApproverId())
                .append("approverName", getApproverName())
                .append("approveTime", getApproveTime())
                .append("approveStatus", getApproveStatus())
                .append("recordStatus", getRecordStatus())
                .append("batchNumber", getBatchNumber())
                .append("expiryDate", getExpiryDate())
                .append("recordRemark", getRecordRemark())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .toString();
    }
}